#pragma once
#include "../../common/include/obj.h"

class IBlockCipherKernel : public CVirtualDestruct
{
public:
    virtual int GetBlockLen() = 0;
    virtual int GetKeyLen()   = 0;
    virtual int SetKey(BYTE *data, int iLen, void *pvResv = nullptr) = 0;
    /*设置密钥和加密选项
    data    密钥明文
    iLen    密钥长度。通常为固定值，但理论上存在密钥长度可变的算法，因此保留此参数。
    */

    virtual int Encrypt(BYTE *pIn, BYTE *pOut) = 0;
    virtual int Decrypt(BYTE *pIn, BYTE *pOut) = 0;
};
